#!/bin/bash

# 如果任何命令失败，立即退出脚本
set -e

# 设置版本号
VERSION="1.0.0"

# 清理旧的构建目录
rm -rf dist

# 创建输出目录
mkdir -p dist

# 确保配置目录存在
mkdir -p config
if [ ! -f "config/config.json" ]; then
    echo "创建默认配置文件..."
    cat > config/config.json << EOF
{
    "server": {
        "port": 8080,
        "host": "localhost"
    },
    "log": {
        "level": "info",
        "file": "app.log"
    }
}
EOF
fi

echo "📦 开始构建版本 ${VERSION}..."

# 编译函数
build() {
    local os=$1
    local arch=$2
    local ext=""
    local output_name="FileClassify"

    # Windows 需要添加 .exe 后缀
    if [ "$os" = "windows" ]; then
        ext=".exe"
    fi

    output_name="${output_name}-${os}-${arch}${ext}"
    echo "正在编译 ${os}/${arch}..."

    # 创建发布包目录
    local dist_dir="dist/FileClassify-${os}-${arch}"
    mkdir -p "${dist_dir}/web/template"
    mkdir -p "${dist_dir}/web/static"
    mkdir -p "${dist_dir}/config"

    # 设置交叉编译环境变量并编译
    GOOS=$os GOARCH=$arch CGO_ENABLED=0 go build \
        -ldflags="-X main.Version=${VERSION}" \
        -o "${dist_dir}/${output_name}" \
        cmd/main.go

    # 复制文件
    cp -r web/template/* "${dist_dir}/web/template/"
    cp -r web/static/* "${dist_dir}/web/static/"
    cp config/config.json "${dist_dir}/config/"

    # 创建压缩包
    if [ "$os" = "windows" ]; then
        (cd dist && zip -r "FileClassify-${os}-${arch}-v${VERSION}.zip" "FileClassify-${os}-${arch}")
    else
        tar -czf "dist/FileClassify-${os}-${arch}-v${VERSION}.tar.gz" -C dist "FileClassify-${os}-${arch}"
    fi

    echo "✅ 编译完成: ${output_name}"
}

# macOS (amd64 和 arm64)
build darwin amd64
build darwin arm64

# Linux (amd64 和 arm64)
build linux amd64
build linux arm64

# Windows (amd64)
build windows amd64

echo "✨ 构建完成！"
echo "输出目录: dist/"
ls -lh dist/

echo "
使用说明:
1. 下载对应平台的压缩包
2. 解压到任意目录
3. 运行可执行文件即可启动服务
4. 访问 http://localhost:8080 使用系统" 